iT邦幫忙

2025 iThome 鐵人賽

DAY 5
0
Rust

用 Tauri 打造你的應用程式系列 第 5

[Day 05] 專案架構

  • 分享至 

  • xImage
  •  

當我們成功建立第一個 Tauri 專案後,面對滿目的檔案和資料夾,可能會感到有些困惑。今天我們將深入解析 Tauri 專案的結構,理解每個檔案的作用和重要性,這將為後續的開發工作奠定堅實的基礎。

前端目錄:熟悉的 Web 開發環境

前端目錄 (src/) 對前端開發者來說是最熟悉的部分,它與一般的 Vue 專案結構完全相同。這裡存放著所有的 Vue 元件、樣式檔案、JavaScript 邏輯等前端資源。

昨天自動建立的檔案並不多,只有這些:

但如果是稍微複雜一點的 Vue 專案,就可能會是這個樣子:

src/
├── components/     # Vue 元件
├── assets/        # 靜態資源(圖片、樣式等)
├── router/        # 路由設定
├── stores/        # Pinia 狀態管理
├── views/         # 頁面視圖
├── App.vue        # 根元件
└── main.ts        # 應用程式入口點

在這個目錄中,我們可以盡情使用 Vue 3 的所有特性,包括 Composition API、響應式資料、元件系統等。值得注意的是,雖然前端部分看起來與一般 Web 應用無異,但它實際上運行在 Tauri 提供的 Webview 環境中,具備了呼叫原生功能的能力。

後端目錄:Rust 的核心世界

後端目錄 (src-tauri/) 是 Tauri 專案的心臟,包含了所有的 Rust 程式碼和設定檔。

src-tauri/
├── capabilities/   # 權限和安全設定
│   └── default.json
├── icons/          # 應用程式圖示
├── src/
│   ├── main.rs     # 桌面端應用入口點
│   └── lib.rs      # 主要應用邏輯和移動端入口點
├── build.rs        # 建置腳本
├── Cargo.toml      # Rust 專案設定檔
└── tauri.conf.json # Tauri 核心設定檔
  • build.rs 是 Tauri 的建置腳本,它在編譯過程中自動執行,負責處理圖示轉換、資源嵌入等預處理工作。一般情況下,我們不需要手動修改這個檔案。

  • Cargo.toml 是 Rust 生態系統的標準專案設定檔,負責管理後端的依賴套件、版本資訊和建置設定。當我們需要整合新的 Rust 函式庫或 Tauri 插件時,都需要在這裡新增相對應的依賴項目。

  • capabilities/ 目錄是 Tauri 2.0 的重要新增功能,用於管理應用程式的權限配置。這個目錄包含了定義前端可以存取哪些原生 API 的權限檔案,取代了 Tauri 1.x 的 allowlist 機制。default.json 是預設的權限配置檔案。

  • src/main.rs 是桌面端應用程式的入口點,負責啟動桌面版本的 Tauri 應用程式。在 Tauri 2.0 中,建議不要直接在此檔案中撰寫業務邏輯,而是呼叫 lib.rs 中的函式:

    #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
    
    fn main() {
        tauri_app_lib::run()
    }
    
  • src/lib.rs 是 Tauri 2.0 的主要應用邏輯中心,同時也是移動端的入口點。所有的 Rust 邏輯、命令註冊、以及應用程式的初始化都應該在這裡進行。這種設計讓桌面端和移動端能夠共享相同的核心邏輯:

    #[cfg_attr(mobile, tauri::mobile_entry_point)]
    pub fn run() {
        tauri::Builder::default()
            .run(tauri::generate_context!())
            .expect("error while running tauri application");
    }
    

核心設定檔:應用程式的控制中心

tauri.conf.json 是整個 Tauri 應用程式的設定檔,包含許多重要的資訊:

  • identifier:應用程式的唯一識別符,格式類似反向網域名稱(如 com.example.myapp)。這個識別符在應用程式的整個生命週期中都不應該改變,因為它會影響應用程式的安裝、更新和數據存儲位置。
  • app:定義應用程式的基本資訊
  • bundle:控制應用程式打包相關的設定
  • productName:產品顯示名稱,這是使用者在系統中看到的應用程式名稱。
  • build:前端建置相關設定,包括:
    • frontendDist:前端建置輸出目錄
    • devUrl:開發模式下的前端服務器位址

其他更詳細的設定(如視窗配置、安全性設定、插件配置等)在之後的相關主題都會再做進一步地介紹~

專案結構的設計哲學

Tauri 的專案結構體現了「關注點分離」的設計哲學。前端專注於使用者介面和互動邏輯,後端負責系統整合和業務邏輯,而設定檔則統一管理應用程式的行為和權限。

這種分離不僅讓熟悉 Web 開發的程式設計師能夠快速上手,也讓 Rust 開發者能夠發揮系統程式設計的優勢。同時,清晰的結構也有利於團隊協作,不同專業背景的開發者可以專注於自己擅長的領域。

小結

今天我們探索了 Tauri 專案的完整架構:前端的 Vue 環境、後端的 Rust 核心,以及統一管控的設定檔系統。Tauri 2.0 透過「關注點分離」的設計,讓不同專業背景的開發者都能發揮所長。


上一篇
[Day 04] 第一個 Tauri 桌面應用程式
系列文
用 Tauri 打造你的應用程式5
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言